Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mi 9t Pro Camera Popup Fix #1

Open
wants to merge 2 commits into
base: q10.0
Choose a base branch
from
Open

Mi 9t Pro Camera Popup Fix #1

wants to merge 2 commits into from

Conversation

ralf979
Copy link

@ralf979 ralf979 commented Feb 27, 2020

this is the fix for the xiaomi Raphael popup camera

Change-Id: I39c59065b1c4e1a1995c755ab490f23407db1da6
Change-Id: I7412aa447a276ec9355288df15ade5f23e982d1b
Gerrit-AICP pushed a commit that referenced this pull request Aug 28, 2021
Fix crashes like this:
05-03 20:55:09.029  6254  6254 F DEBUG   :       #00 pc 00000000  <unknown>
05-03 20:55:09.029  6254  6254 F DEBUG   :       #1 pc 000ec8ab  /system/lib/libcameraservice.so (android::CameraHardwareInterface::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+18) (BuildId: 078b8118f1d0503988dc8f86045848d8)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #2 pc 0002e6cd  /system/lib/[email protected] (android::hardware::camera::device::V1_0::BsCameraDeviceCallback::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+96) (BuildId: a964b5ab287096bfb4e9fb1357483757)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #3 pc 00013783  /system/vendor/lib/[email protected]_msm8960.so (android::hardware::camera::device::V1_0::implementation::CameraDevice::sNotifyCb(int, int, int, void*)+46) (BuildId: 183c013753a49cdceaf880f00b6083b7)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #4 pc 00038b99  /system/vendor/lib/hw/camera.vendor.msm8960.so (android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_ch_data_buf_t*)+128)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #05 pc 000086ff  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #06 pc 00008855  /system/lib/libmmcamera_interface2.so (mm_camera_msm_data_notify+248)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #07 pc 0000736f  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #08 pc 000a6b67  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #09 pc 00060101  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)

In case of HTC One M7, the nullptr appears because of this call:
https://github.com/AICP/frameworks_av/blob/q10.0/services/camera/libcameraservice/CameraFlashlight.cpp#L528

And while we're on it, lets fix some more possible nullptr's too.

Change-Id: I2f67756d576d62560a2e65af55ab868bfc3e36ba
Signed-off-by: Julian Veit <[email protected]>
Claymore1297 pushed a commit to Claymore1297/frameworks_av that referenced this pull request Mar 16, 2022
Fix crashes like this:
05-03 20:55:09.029  6254  6254 F DEBUG   :       #00 pc 00000000  <unknown>
05-03 20:55:09.029  6254  6254 F DEBUG   :       AICP#1 pc 000ec8ab  /system/lib/libcameraservice.so (android::CameraHardwareInterface::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+18) (BuildId: 078b8118f1d0503988dc8f86045848d8)
05-03 20:55:09.030  6254  6254 F DEBUG   :       AICP#2 pc 0002e6cd  /system/lib/[email protected] (android::hardware::camera::device::V1_0::BsCameraDeviceCallback::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+96) (BuildId: a964b5ab287096bfb4e9fb1357483757)
05-03 20:55:09.030  6254  6254 F DEBUG   :       AICP#3 pc 00013783  /system/vendor/lib/[email protected]_msm8960.so (android::hardware::camera::device::V1_0::implementation::CameraDevice::sNotifyCb(int, int, int, void*)+46) (BuildId: 183c013753a49cdceaf880f00b6083b7)
05-03 20:55:09.030  6254  6254 F DEBUG   :       AICP#4 pc 00038b99  /system/vendor/lib/hw/camera.vendor.msm8960.so (android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_ch_data_buf_t*)+128)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #05 pc 000086ff  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #06 pc 00008855  /system/lib/libmmcamera_interface2.so (mm_camera_msm_data_notify+248)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #07 pc 0000736f  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #08 pc 000a6b67  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #09 pc 00060101  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)

In case of HTC One M7, the nullptr appears because of this call:
https://github.com/AICP/frameworks_av/blob/q10.0/services/camera/libcameraservice/CameraFlashlight.cpp#L528

And while we're on it, lets fix some more possible nullptr's too.

Change-Id: I2f67756d576d62560a2e65af55ab868bfc3e36ba
Signed-off-by: Julian Veit <[email protected]>
Gerrit-AICP pushed a commit that referenced this pull request Apr 5, 2022
Fix crashes like this:
05-03 20:55:09.029  6254  6254 F DEBUG   :       #00 pc 00000000  <unknown>
05-03 20:55:09.029  6254  6254 F DEBUG   :       #1 pc 000ec8ab  /system/lib/libcameraservice.so (android::CameraHardwareInterface::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+18) (BuildId: 078b8118f1d0503988dc8f86045848d8)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #2 pc 0002e6cd  /system/lib/[email protected] (android::hardware::camera::device::V1_0::BsCameraDeviceCallback::notifyCallback(android::hardware::camera::device::V1_0::NotifyCallbackMsg, int, int)+96) (BuildId: a964b5ab287096bfb4e9fb1357483757)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #3 pc 00013783  /system/vendor/lib/[email protected]_msm8960.so (android::hardware::camera::device::V1_0::implementation::CameraDevice::sNotifyCb(int, int, int, void*)+46) (BuildId: 183c013753a49cdceaf880f00b6083b7)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #4 pc 00038b99  /system/vendor/lib/hw/camera.vendor.msm8960.so (android::QCameraStream_preview::processPreviewFrameWithDisplay(mm_camera_ch_data_buf_t*)+128)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #05 pc 000086ff  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #06 pc 00008855  /system/lib/libmmcamera_interface2.so (mm_camera_msm_data_notify+248)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #07 pc 0000736f  /system/lib/libmmcamera_interface2.so
05-03 20:55:09.030  6254  6254 F DEBUG   :       #08 pc 000a6b67  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+20) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)
05-03 20:55:09.030  6254  6254 F DEBUG   :       #09 pc 00060101  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30) (BuildId: 1c34385a63ae9f807822c87c6b4126d2)

In case of HTC One M7, the nullptr appears because of this call:
https://github.com/AICP/frameworks_av/blob/q10.0/services/camera/libcameraservice/CameraFlashlight.cpp#L528

And while we're on it, lets fix some more possible nullptr's too.

Change-Id: I2f67756d576d62560a2e65af55ab868bfc3e36ba
Signed-off-by: Julian Veit <[email protected]>
Gerrit-AICP pushed a commit that referenced this pull request Apr 11, 2023
Do not hold lock when IPC call is expected from HAL.

C2SurfaceSyncObj is shared lock between framework and HAL. HAL process
can have only one thread to handle IPC from HAL to framework.
Therefore Holding C2SurfaceSyncObj from HAL during IPC call could
trigger deadlock. The exact scenario is as follows.

Thread #1:(HAL -> framework IPC) HIDL call onInputBuffersReleased()
            calls to feedInputBufferIfAvailable(). Since this is using
            HAL IPC thread, this will block Thread #3. This is waiting
            for mOuput mutex which is held by Thread #2.
Thread #2:(framework) discardBuffer() holds mOutput mutex which blocks
            Thread #1. But this is waiting for C2SurfaceSyncObj which is
            held by Thread #3.
Thread #3:(HAL) Dtor of C2BufferQueueBlockPoolData is holding
            C2SurfaceSyncObj, therefore this will block #2. This thread
            is waiting for HIDL IPC thread to be free in order for
            'igbp->cancel()', but HIDL IPC thread is already occupied by
            Thread #1.

Bug: 246707566
Test: atest android.media.decoder.cts.AdaptivePlaybackTest
Test: atest android.media.decoder.cts.DecoderTest
Change-Id: I6a9540d3b4d03806cd40bb4f89a234a6b77758a9
Merged-In: I6a9540d3b4d03806cd40bb4f89a234a6b77758a9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants